package com.atguigu.springcloud.cas;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * cas过程中 对 integer.getAndIncrement()的记录
 */
public class CasDemo {
    /**
     * cas 的 demo
     *
     * @param args
     */
    public static void main(String[] args) {
        AtomicInteger integer = new AtomicInteger(99);

        //unsafe 类 底层 只是修改了内存偏移地址对应的值，但是返回的还是 最初值 var5，想要获得内存地址最新的值 依旧需要使用 AtomicInteger.get();
        //public final int getAndAddInt(Object var1, long var2, int var4) {
        //        int var5;
        //        do {
        //            var5 = this.getIntVolatile(var1, var2);
        //        } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
        //
        //        return var5;
        //    }
        int returnVar5 = integer.getAndIncrement();
        int getValue = integer.get();
        System.out.println("returnValue:"+returnVar5 +"\t nowValue：" +getValue);
    }
}
